package test.designmode.delegate;   
  
/**
 * @brief  负责执行监听器(EventHandler)里面的所有委托的方法;
 *         同时也负责将委托的方法及执行该方法的对象add到EventHandler中;
 *         
 *         Notifier.notifyX()类似于emit signals;
 *         Notifier.addListenser()类似于QObject::connect();
 *         
 *         将EventHandler作为成员变量的基本都是Notifier;
 *
 * @author linshuo
 *
 */
public abstract class Notifier {
    // Notifier实质由eventHandler代理
    private EventHandler eventHandler=new EventHandler();   //事件集合, 一开始事件集合为空
       
    public EventHandler getEventHandler() {   
        return eventHandler;   
    }

    public void setEventHandler(EventHandler eventHandler) {   
        this.eventHandler = eventHandler;   
    }

    //增加需要帮忙放哨的学生   
    public abstract void addListener(Object object, String methodName, Object...args);

    //告诉所有要帮忙放哨的学生：老师来了   
    public abstract void notifyX();   
}  